def entropia(probabilidades)
	entropia = []
	probabilidades.each { |s,prob|
		entropia << prob * Math.log(prob)
	}
	-entropia.reduce(&:+)
end

def calcular_probabilidades_de(simbolos)
	probabilidad_por_simbolo = {}
	
	simbolos.sort.uniq.each do |s|
		probabilidad_por_simbolo[s] = simbolos.count(s) / simbolos.size.to_f
	end

	return probabilidad_por_simbolo
end

def print_info(titulo, info)
	puts titulo
	puts "Probabilidades:"
	probas = calcular_probabilidades_de info
	p probas
	puts "Entropia:"
	puts entropia probas
	puts ""
end


macs_origen = []
macs_destino = []
ips_solicitadas = []
ips_solicitantes = []

STDIN.readlines[1..-1].each do |line|
	line = line.strip.split(',').map{|x| x[1..-2]}
	macs_origen  << line[2]
	macs_destino << line[3]

	if line[6].include? "Who has"
		ips_solicitadas << line[6][/[0-9]+.[0-9]+.[0-9]+.[0-9]+/]
		ips_solicitantes << line[6][/[0-9]+.[0-9]+.[0-9]+.[0-9]+$/]
	end
end

print_info "------MACs ORIGEN------", macs_origen
print_info "------MACs DESTINO------", macs_destino
print_info "------IPs SOLICITADAS------", ips_solicitadas
print_info "------IPs SOLICITANTES------", ips_solicitantes
